相較於從頭教起有關 Python 的細節知識,這個復健系列主要是希望透過主題式筆記的方式,摘要學習 Python 的重點知識,藉此可以快速回憶起 Python,所以對於已經有學習過 Python 相關知識的各位,能夠更快地瞭解內文想要表達的意涵。
這個 Python 30 日復健系列,主要受到 GitHub 的一位名為 Asabeneh S. Yetayeh 工程師所啟發,在他的 30-Days-Of-Python 中,將 Python 基礎知識分成 30 天份的學習內容,只要能夠努力撐過這 30 天,相信我們對於 Python 的熟習度,都能有大幅地成長。
所以,我們開始這趟旅程吧!
網路上有許多有關如何安裝與設定 Python 的教學影片,Python 的安裝本身也算容易,基本上到 Python 官網 尋找所需的版本進行安裝即可,這邊就不再贅述。
這邊只就安裝好 Python 後,我們如何在 Terminal 終端機裡,輸入幾個常見的指令來確認 Python 的相關指令並使用 Python。
python --version
python
ctrl + d
exit()
.py
的副檔名結尾。縮排指的是「在每一行的開頭,新增指定次數的空白鍵」,因為在許多程式語言中,正確的縮排可以大幅增加程式碼的可閱讀性,而這一點在 Python 中尤其重要,因為 Python 是透過縮排來辨別各區塊的程式碼,剛開始學習 Python 時,時常會因為縮排錯誤導致程式碼執行後發生錯誤,但隨著對於 Python 的熟悉與 IDE 擴充程式的協助,不知不覺會下意識地進行縮排,依照 Python 的慣例————「使用 4 個空白鍵作為縮排」。
print("hello world")
def greeting(text):
# 由於我們希望這邊的內容是 def greeting(text) 的一部分,所以要進行縮排。
print("hi, how are you?")
print("I am fine.")
# 這邊則希望開始編寫其他獨立於 def greeting(text) 的其他內容,所以不需要縮排,直接從頭開始編寫。
print("this is a new beginning.")
註解 comment 顧名思義即是「針對某段的原始碼進行補充與備註,而這段原始碼也不會被 Python 執行」。
通常我們會使用註解解釋某段原始碼的用途,日後我們或是其他人在閱讀這段原始碼的時候,可以更輕鬆地瞭解原始碼的意義。
同樣地,我們也可以利用「註解段落不會被 Python 執行」的特型,讓 Python 在執行時刻意地跳過某段程式碼,進而改變執行後所得到的結果。
我們可以使用 #
井字號達到註解單行程式碼的效果,同時依照慣例,我們會在 #
後面空一格,才開始編寫想要輸入的註解內容。
# comment starts with hash
# this is a python comment, because it starts with a (#) symbol
我們也可以透過 """
(三個引號)達到多行註解的效果。
"""
上面三個引號,代表是註解的開始。
註解註解註解註解註解註解註解註解
多行註解有開始,就要有結束。
下面三個引號,代表是註解的結束。
"""
Python 中,不同的資料種類有不同的負責內容與運算規則,下面是幾種常見的資料類型(Data Types):
String 字串
String
字串應該是 Python 中最常見到的資料種類,當我們想要表達一個字詞時,我們可以使用「單引號或是雙引號」表示這是一個字串。
"這是使用雙引號的字串"
'這是使用雙引號的字串'
'不可以單引號開始,雙引號結束!"
Number 數字
除了字串,在 Python 中第二常見的資料類型就屬 Number
數字了,數字的又可以再細分成:
Integer
整數:包含正整數、負整數、零。Float
浮點數:代表的帶有小數的數值。Complex
複數:由實部與虛部所組成的數字類型。123 # 這是 Integer 整數
9.1 # 這是 Float 小數
2 + 4j # 這是 Complex 複數
請問以下分別是哪種資料類型呢?
答案
String
字串Float
浮點數Integer
整數Float
浮點數Boolean 布林值
Boolean
布林值又可稱作「真假值」,因為布林值只有 True
跟 False
,如果不是真的,那就一定是假的,沒有曖昧的存在。
True # 真的,記得 T 要大寫
False # 假的,記得 F 要大寫
Python 還有一些可以存放多個元素的資料型態,像是 List 串列、Dictionary 字典、Tuple 元組、Set 集合,這些比較複雜的資料型態,現在有個印象即可,待後面我們再娓娓道來。
使用 type
function
type("hello") # str
type(10) # int
type(3.14) # float
type(1 + 3j) # complex
type([1, 2, "abc"]) # list
type({"age": 18}) # dict
type((2, 4, "go",)) # tuple
type({0.5, 3, 10}) # set
如果執行的內容有錯誤,Python 會顯示相關的錯誤 (Error) 訊息內容,因此可以多瞭解常見的 Python 錯誤訊息類型,透過瞭解這些 Error Types 的訊息內容,我們可以更快得知程式碼中的錯誤原因,並根據其內容進行除錯(Debug),節省一步步偵查、測試的時間。
常見的Error Types 錯誤類型有:
SyntaxError
# SyntaxError: Missing colon after if statement
if True
print("This will cause a SyntaxError")
IndexError
# IndexError: Trying to access an index that doesn't exist
my_list = [1, 2, 3]
print(my_list[3])
NameError
# NameError: Using a variable that hasn't been defined
print(non_existent_variable)
ModuleNotFoundError
# ModuleNotFoundError: Trying to import a module that doesn't exist
import non_existent_module
KeyError
# KeyError: Accessing a non-existent key in a dictionary
my_dict = {"a": 1, "b": 2}
print(my_dict["c"])
ImportError
# ImportError: Importing a non-existent name from a module
from math import non_existent_function
AttributeError
# AttributeError: Accessing a non-existent attribute of an object
my_list = [1, 2, 3]
my_list.non_existent_method()
TypeError
# TypeError: Performing an operation on incompatible types
print("String" + 5)
ValueError
# ValueError: Passing an invalid value to a function
int("not_a_number")
ZeroDivisionError
# ZeroDivisionError: Dividing a number by zero
print(10 / 0)
除了一般的加減乘除,在 Python 中常見的運算子還有平方 **
、餘數 %
、商數 \\
。
print(2 + 3) # 5
print(3 - 1) # 2
print(3 * 2) # 6
print(3 / 2) # 1.5
print(3 ** 2) # 9
print(11 % 3) # 2
print(11 // 3) # 1
在原版的 30-Days-Of-Python 裡面,作者有針對每一天規劃了不同的練習題目,我也有將這些題目的問題與答案整理在個人的 GitHub 作為紀錄與分享,裡面的內容與翻譯會隨著鐵人賽的進行漸漸充實,這邊也跟大家分享我在練習時的一些習慣與心法:
復健的旅程其實充滿了苦痛,但如果我可以撐過三十天的鐵人賽,相信你也一定可以讀完三十天的鐵人賽,期待我們一起越來越厲害!